package io.lvdaxian.mybatis19.scripting;

import io.lvdaxian.mybatis19.executor.parameter.ParameterHandler;
import io.lvdaxian.mybatis19.mapping.BoundSql;
import io.lvdaxian.mybatis19.mapping.MappedStatement;
import io.lvdaxian.mybatis19.mapping.SqlSource;
import io.lvdaxian.mybatis19.session.Configuration;
import org.dom4j.Element;

/**
 * 表示语言驱动, 规定用什么语言进行解析
 *
 * @author lihh
 */
public interface LanguageDriver {
  // 从这个接口中 创建sql 数据源
  SqlSource createSqlSource(Configuration configuration, Element script, Class<?> parameterType);
  
  // 这里重载一个参数，用来处理 注解 的
  SqlSource createSqlSource(Configuration configuration, String script, Class<?> parameterType);
  
  // 这里创建一个参数 处理器
  ParameterHandler createParameterHandler(MappedStatement mappedStatement, Object parameterObject, BoundSql boundSql);
}
